package com.just.fun.arithmetic;

/**
 * 旋转数组
 * 把一个数组最开始的若干个元素搬到数组的末尾，我们称之为数组的旋转。
 * 输入一个递增排序的数组的一个旋转，输出旋转数组的最小元素。例如数组 {3，4，5，1，2} 为数组 {1，2，3，4，5} 的一个旋转，
 * 该数组的最小值为 1。
 */
public class RotateStr {
    public static void main(String[] args) {
        int[] nums={3,4,5,1,2};
        System.out.println(getMin(nums));
    }
    public static int getMin(int[] nums){
        if(nums==null || nums.length==0){
            return -1;
        }

        if(nums.length==1){
            return nums[0];
        }
        //二分查找法
        int low=0;
        int high=nums.length-1;
        while (nums[low]>=nums[high]){
            if ((high-low)==1){
                return nums[high];
            }
            int mid=(low+high)/2;
            if(nums[mid]>=nums[low]){
                low=mid;
            }else{
                high=mid;
            }
        }
        return -1;
    }
}
